import {RegEnum, StrLengthParam} from "csap-typescript-vue2";

export const ValidateForm = {
    methods: {
        /**
         * 验证两次密码是否一致
         * @param p1
         * @param p2
         * @param call
         */
        validateconfirmPassword(p1: string, p2: string, call: Function, c: boolean) {
            if (p1 != p2) {
                call("两次输入密码不一致!");
                return false;
            }
            if (c) {
                call();
            }
            return true;
        },
        /**
         * 验证空字符串
         * @param p1 验证的数据
         * @param message 提示的消息
         * @param call 是否需要回调
         */
        isEmpty(p1: string, message: string, call: Function, c: boolean) {
            if (p1 == null || p1.trim().length == 0) {
                call(message + "不能为空！");
                return false;
            }
            if (c) {
                call();
            }
            return true;
        },
        /**
         * 验证邮箱
         * @param email 验证的邮箱
         * @param call 回调
         */
        isEmail(email: string, call: Function) {
            if (!this.isEmpty(email, "邮箱", call)) {
                return;
            }
            if (!RegEnum.EMAIL.test(email)) {
                call("邮箱格式不正确");
                return false;
            }
            call();
            return true;
        },
        /**
         * 验证身份证号码
         * @param idNo 身份证号码
         * @param call 回调
         */
        isIdcard(idNo: string, call: Function) {
            if (!this.isEmpty(idNo, "身份证号码", call)) {
                return;
            }
            if (!RegEnum.IDCARD15.test(idNo) && !RegEnum.IDCARD18.test(idNo)) {
                call("身份证号码不正确");
                return false;
            }
            call();
            return true;
        },
        /**
         * 是否手机号码
         * @param phone 手机号
         * @param call 回调
         */
        isPhone(phone: string, call: Function) {
            if (!this.isEmpty(phone, "手机号码", call)) {
                return false;
            }
            if (!(RegEnum.PHONE.test(phone))) {
                call(new Error("手机号码有误"));
                return false;
            }
            call();
            return true;
        },
        /**
         * 判断字符的长度，可限制范围性字符
         * @param param 长度限制的对象
         */
        strLength(param: StrLengthParam) {
            if (!this.isEmpty(param.str, param.message, param.call)) {
                return false;
            }
            if ((param.reg != null && !param.reg.test(param.str)) || (param.start >= 0 && param.end > 1) && (param.str.length < param.start && param.str.length < param.end)) {
                param.call(`请输入${param.start}-${param.end}个` + param.message);
                return false;
            }
            param.call();
            return true;
        },
        /**
         * 验证正则
         * @param str
         * @param reg
         */
        validateReg(str: string, reg: RegExp, message: string, call: Function) {
            if (!reg.test(str)) {
                call(message);
                return false;
            }
            call();
            return true;
        },
    }
}
